package com.qingcloud.adminbackend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qingcloud.adminbackend.entity.message.*;
import com.qingcloud.adminbackend.entity.message.*;
import com.qingcloud.adminbackend.pojo.OptionNode;

import java.util.List;

/**
 * <p>
 * 平台消息事件 服务类
 * </p>
 *
 * @author zhoujun
 * @since 2021-11-24
 */
public interface ISysMessageService{

    /**
     * 保存消息配置新
     * @param config
     * @return
     */
    int saveMessageConfig(SysMessageConfig config);

    IPage<SysMessageConfig> findConfigList(String type, Integer page, Integer length);

    SysMessageConfig configDetails(Integer id);

    /**
     * 保存事件类型配置
     */
    int savEventType(SysMessageTypeConfig typeConfig);

    IPage<SysMessageTypeConfig> findEventTypeConfigList(String name, Integer page, Integer length);

    List<SysMessageTypeConfig> eventTypeList();

    SysMessageTypeConfig typeConfig(Integer id);

    /**
     * 保存事件管理
     */
    int saveEvenManage(SysMessageEventVo vo);

    int updataEvenManageStatus(List<SysMessageEvent> voList);

    IPage<SysMessageEventListVo> findMessageEventList(SysMessageEventDto dto);

    SysMessageEventListVo messageEventDetails(Integer id);

    int deleteMessageEventList(List<Integer> ids );

    int deleteMessageEventType(List<Integer> ids );

    int deleteMessageConfig(List<Integer> ids );

    /**
     * 事件通知配置查询
     * @return  事件列表
     */
    List<EventMessageInfoVO> eventNoticeConfigList();

    /**
     * 保存事件规则
     */
    void saveEventRule(SysMessageEventSaveRule saveRule);

    /**
     * 查询事件规则
     */
    SysMessageEventSaveRule findEventRuleDetail(String eventCode);

    /**
     * 查询规则参与计算字段
     * @param eventCode 事件编号
     */
    List<OptionNode> findCalFields(String eventCode);

    /**
     * 查询事件类型下面的事件
     */
    List<OptionNode> findEventByTypeId(Integer typeId);

    /**
     * 查询事件类型字段配置
     */
    List<SysMessageTypeField> findTypeFields(Integer typeId);

}
